package cn.tedu.straw.redis.tag.schedule;


import cn.tedu.straw.redis.tag.service.ITagService;
import cn.tedu.straw.redis.tag.vo.TagVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.List;

@Component
public class RedisTagSchedule {
    @Autowired
    ITagService tagService;
    @Autowired
    RedisTemplate<String, Serializable> redisTemplate;

    @Scheduled(fixedRate = 5*1000)
    public void updateTags(){
        //从mySQL中读取标签列表
        List<TagVO> tags=tagService.getTagList();
        //通过redisTemplate 获取List类型的数据操作器
        ListOperations<String ,Serializable>  ops= redisTemplate.opsForList();
        //在redis中用于保存标签列表的数据
        String tagsKey = "tags";
        //先删除Redis服务器中已经保存的标签列表
        redisTemplate.delete(tagsKey);
        //通过以上操作器向Redis中写入数据,一次只能写入List中的一条数据
        for (TagVO tag : tags) {
            ops.rightPush(tagsKey,tag);
        }

    }

}
